//给定一个数字，我们按照如下规则把它翻译为字符串：0 翻译成 “a” ，1 翻译成 “b”，……，11 翻译成 “l”，……，25 翻译成 “z”。一个数字可
//能有多个翻译。请编程实现一个函数，用来计算一个数字有多少种不同的翻译方法。
//
//
//
// 示例 1:
//
// 输入: 12258
//输出: 5
//解释: 12258有5种不同的翻译，分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"
//
//
//
// 提示：
//
//
// 0 <= num < 2³¹
//
//
// Related Topics 字符串 动态规划 👍 574 👎 0


//leetcode submit region begin(Prohibit modification and deletion)
function translateNum(num: number): number {

    //? 本质是一个字符串分割问题 范围是0-25
    let str = String(num)

    function backtracking(startIndex) {
        if (startIndex >= str.length) {
            count++
            return
        }
        for (let i = startIndex; i < str.length; i++) {
            //? 0-25间 且不能以0开头
            if (+str.substring(startIndex,i + 1) < 0 || +str.substring(startIndex,i + 1) > 25 || (str.substring(startIndex,i + 1).length > 1 && +str.substring(startIndex,i + 1)[0] === 0)) {
                continue
            }
            route.push(str.substring(startIndex,i + 1))
            backtracking(i + 1)
            route.pop()
        }
    }
    let count = 0
    let route = []
    backtracking(0)
    return count

};
//leetcode submit region end(Prohibit modification and deletion)
